﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using SIM.Geo.BE;
using System.Linq;

namespace SIM.Geo.DA
{
    public class DATrabajador : Base
    {
        #region Metodos
        /// <summary>
        /// Método que devuelve la lista de Trabajador
        /// </summary>
        /// <returns></returns>
        public List<Trabajador> ListarTrabajador()
        {
            return this.Context.Trabajador.ToList();
        }
        /// <summary>
        /// Método que devuelve la lista de Trabajador
        /// </summary>
        /// <returns></returns>
        public List<buscarTrabajadorPorPerfil_Result> BuscarTrabajadorPorPerfil(int codigoPerfilTrabajador)
        {
            return this.Context.buscarTrabajadorPorPerfil(codigoPerfilTrabajador).ToList();
        }
        /// <summary>
        /// Método para insertar una Trabajador
        /// </summary>
        /// <param name="Trabajador"></param>
        /// <returns></returns>
        public string InsertarTrabajador(Trabajador trabajador)
        {
            this.Context.Trabajador.AddObject(trabajador);
            this.Context.SaveChanges();
            return trabajador.CodigoTrabajador;
        }
        /// <summary>
        /// Método para modificar un Trabajador
        /// </summary>
        /// <param name="Trabajador"></param>
        public void ModificarTrabajador(Trabajador trabajador)
        {
            this.Context.Trabajador.Attach(trabajador);
            this.Context.ObjectStateManager.ChangeObjectState(trabajador, EntityState.Modified);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método para eliminar Trabajador
        /// </summary>
        /// <param name="Trabajador"></param>
        public void EliminarTrabajador(Trabajador trabajador)
        {
            this.Context.Trabajador.Attach(trabajador);
            this.Context.Trabajador.DeleteObject(trabajador);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método que busca por nombre Trabajador
        /// </summary>
        /// <param name="nombre"></param>
        /// <returns></returns>
        public List<Trabajador> BuscarTrabajador(string nombre)
        {
            return this.Context.Trabajador.Where(x => x.Nombres.StartsWith(nombre)).ToList();
        }
        /// <summary>
        /// Método que devuelve Trabajador por codigo
        /// </summary>
        /// <param name="codigoTrabajador"></param>
        /// <returns></returns>
        public Trabajador ObtenerTrabajador(int codigoTrabajador)
        {
            return this.Context.Trabajador.Where(x => x.CodigoTrabajador.Equals(codigoTrabajador)).FirstOrDefault();
        }
        #endregion
    }
}
